4. 문장을 호출한 곳으로 옮기기

함수의 기능을 쪼개서 문장을 밖으로 이동
경우에 따라 문장을 더 슬라이스 하거나 함수로 추출할 수도 있음

  • 함수가 둘 이상의 다른 일을 하는데, 그 중 하나만 변경이 필요할 때

절차


  1. 호출자가 한두 개뿐이고 피호출 함수도 간단한 단순한 상황이면, 피호출 함수의 처음(혹은 마지막)줄(들)을 잘라내어 호출자(들)로 복사해 넣는다(필요하면 적당히 수정한다). 테스트만 통과하면 이번 리팩토링은 여기서 끝이다.
  2. 더 복잡한 상황에서는, 이동하지 '않길' 원하는 모든 문장을 함수로 추출(6.1)한 다음 검색하기 쉬운 임시 이름을 지어준다.
  3. 원래 함수를 인라인(6.2)한다.
  4. 추출된 함수의 이름을 원래 함수의 이름으로 변경한다(6.5). (더 나은 이름이 있다면 그 이름을 쓴다)

예시 코드

😞 Before

emitPhotoData(outStream, person.photo)

function emitPhotoData(outStream, photo) {
    outStream.write(`<p>제목: ${photo.title}</p>\n`)
    outStream.write(`<p>위치: ${photo.location}</p>\n`)
}

😃 After

emitPhotoData(outStream, person.photo)
outStream.write(`<p>위치: ${person.photo.location}</p>\n`)

function emitPhotoData(outStream, photo) {
    outStream.write(`<p>제목: ${photo.title}</p>\n`)
}

results matching ""

    No results matching ""